// pages/login/login.js
// 登录流程：
// 收集表单数据
// 前端验证：账号密码是否合法，不合法提示，合法携带信息发请求
// 后台验证：用户是否存在；密码是否正确；返回给前端（提示或者登陆成功以及信息）
import request from '../../utils/request'
Page({

    /**
     * 页面的初始数据
     */
    data: {
        codeIsValid: true,
        codeIsLoading: false,
        QRkey: '',
        QRBase64: '',
        cookier: ''
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.getLoginQRImg()
    },
    // 双向绑定表单数据，改用model:value='{{phone}}'
    handleInput(event) {
        // console.log(event)
        // let type = event.currentTarget.id 
        // // let type = event.currentTarget.dataset.type
        // this.setData({
        //     [type]: event.detail.value
        // })
    },
    async getLoginQRImg() {
        // 获取 key
        const {
            data: dataKeyObj
        } = await request('/login/qr/key', {
            timestamp: new Date().getTime(),
        })
        this.setData({
            QRkey: dataKeyObj.unikey
        })
        console.log('二维码的key:', dataKeyObj)
        // 获取 二维码
        const {
            data: dataQRObj
        } = await request('/login/qr/create', {
            key: this.data.QRkey,
            qrimg: true,
            timestamp: new Date().getTime(),
            withCredentials: true
        })
        this.setData({
            QRBase64: dataQRObj.qrimg
        })
        console.log('二维码base64格式:', this.data.QRBase64)
        // 循环判断二维码是否过期  是否已经登录
        const timer = setInterval(async () => {

            const keyStatus = await request('/login/qr/check', {
                key: this.data.QRkey,
                timestamp: new Date().getTime(),
                withCredentials: true,
                isLogin: true
            })
            console.log(keyStatus)
            if (keyStatus.code === 800) {
                // 二维码过期
                console.log('二维码已失效')
                this.setData({
                    codeIsLoading: false,
                    codeIsValid: false
                })
                clearInterval(timer)
            } else if (keyStatus.code === 802) {
                // 授权登录中
                console.log('授权登录中...')
                this.setData({
                    codeIsLoading: true
                })
            } else if (keyStatus.code === 803) {
                this.setData({
                    codeIsLoading: false,
                    cookier: keyStatus.cookie
                })
                wx.setStorage({
                    key: 'cookies',
                    data: keyStatus.cookie
                })
                // 登录成功 会返回 cookie
                console.log('登录成功')
                clearInterval(timer)
                // 本地存储用户信息
                // wx.setStorageSync('userInfo', JSON.stringify(result.profile))
                // 登陆成功跳转个人中心
                wx.reLaunch({
                  url: '/pages/personal/personal',
                })
                const { data: loginStatus } = await request('/login/status', {
                timestamp: new Date().getTime(),
                withCredentials: true
                })
                console.log('loginStatus', loginStatus)
                const { data: userAccount } = await request('/user/account', {

                })
                console.log('userAccount', userAccount)
            }
        }, 3000)
    },
    // 刷新二维码
    afreshGetQR() {
        this.getLoginQRImg()
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})